home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1997 August / Macworld (1997-08).dmg / Shareware World / Info / For Developers / InstallerMaker™ 4.0 Installer / Customizing InstallerMaker / Sample Code / Utilities / ParsePkgBits.cp < prev    next >
Text File  |  1995-08-03  |  3KB  |  107 lines

  1.  
  2.  
  3. // Demo routine that shows you how to for dealing with 3.0 package bits.
  4. // We don't recommend you use this for anything except for learning how
  5. // to play with packages in IM 3.0
  6.  
  7. //  Copyright© 1994-1995 Aladdin Systems, inc.
  8.  
  9. //  12/30/94 RMT; revised 8/3/95 RMT
  10.  
  11.  
  12. /**
  13.  
  14.  
  15. Packages field
  16. ==============
  17.  
  18. The interpretation of packages for the code rsrcs is:
  19.  
  20. IM 2.0: packages should be interpreted as a 16 bit field.  Bit 0 is the lowest bit.
  21.  
  22. IM 3.0: packages should be interpreted as a 128 bit field.  packages[0] contains
  23.     bits 0-31 where 0 is the lowest bit.  packages[1] contains bits 32-63 where
  24.     32 is the lowest bit.  Similarly for packages[2] and packages[3].
  25.  
  26. packages is a bit mask where bit 0 set means std pkg, bit 1 set means pkg A,
  27.     bit 2 means B, etc.  For compatibility, a value of zero is synonymous with all ones.
  28.     
  29. The packages field typically specifies the currently selected pkgs unless otherwise
  30. noted.
  31.  
  32.  
  33. ***/
  34.  
  35. #include <IOStream.h>
  36. #include "IMPackages.h"
  37.  
  38.  
  39. void main ()
  40. {
  41.     StringPtr    aStr = "\pSTD" , bStr = "\p" ,
  42.                 cStr = "\pa", dStr = "\pz", eStr = "\pAA", 
  43.                 fStr = "\pAZ", gStr = "\pBB", hStr = "\pDW" ;
  44.     
  45.     char    store [40] ;        
  46.                 
  47.     cout << "Initialize\n" ; // This makes sure that your compiler generates
  48.                              // Toolbox initialization calls.
  49.         
  50.             
  51.     short    i ;
  52.     char    bigStore [500] ;
  53.     long package [4] ;
  54.     
  55.     package [0] = 0 ;
  56.     package [1] = 0 ;
  57.     package [2] = 0 ;
  58.     package [3] = 0 ;
  59.     
  60.     
  61.     cout << "0 " << GetPkgLetters ( 0, store ) << '\n' ;
  62.     cout << "1 " << GetPkgLetters ( 1, store ) << '\n' ;
  63.     
  64.     for ( i= -1 ; i< 140; i+=10 )
  65.     {        
  66.         cout << i << ": " << GetPkgLetters ( i, store ) << '\n' ;
  67.         SetPackageBit ( package, i , true ) ; // turn on this bit
  68.     }
  69.         
  70.     cout << "What's set? " << 
  71.         ConstructPkgString ( package, bigStore ,sizeof (bigStore)) << '\n' ;
  72.     
  73.     for ( i = 12 ; i < 18 ; i++ )    
  74.         cout << "What if we're shorter? (" << i << ")" <<
  75.             ConstructPkgString ( package, bigStore ,i) << '\n' ;
  76.         
  77.  
  78.     
  79.     package [0] = 1 ;
  80.     package [1] = 2 ;
  81.     package [2] = 7 ;
  82.     package [3] = 1 << 31 ;
  83.     
  84.     cout << "1 << 10 " << package [3] << '\n' ;
  85.     
  86.     cout << "Is Bit 33 set? " << GetPackageBit ( package, 33)  
  87.         << "  (" << package [1] << ") " << '\n' ;
  88.     SetPackageBit ( package, 33, false );
  89.     cout << "Is Bit 33 set now? " << GetPackageBit ( package, 33)   
  90.         << "  (" << package [1] << ") " << '\n' ;
  91.     SetPackageBit ( package, 33, true );
  92.     cout << "Is Bit 33 set now? " << GetPackageBit ( package, 33)   
  93.         << "  (" << package [1] << ") " << '\n' ;
  94.         
  95.     cout << "What's set? " << 
  96.         ConstructPkgString ( package, bigStore ,sizeof (bigStore)) << '\n' ;
  97.  
  98.             
  99.     cout << "Done.\n" ;
  100.     
  101. }
  102.                     
  103.                 
  104.     
  105.                              
  106.         
  107.